4836
20529
Bu sorunun zaten burada cevapları var:
Python'da bir dizeyi ters çevirme
(29 cevap)
4 yıl önce kapalı.
Bir dizeyi tersine çevirmeye çalışıyorum ve aşağıdaki kodu kullanıyorum, ancak ortaya çıkan ters liste değeri Yok.
Kod:
str_a = 'Bu heyecan verici'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = '' .join (rev_word)
TypeError'ı döndürür. Neden? 
.reverse (), Yok değerini döndürür. Bu nedenle, onu bir değişkene atamamalısınız.
Bunun yerine şunu kullanın:
stra = 'Bu bir dizedir'
revword = stra.split ()
revword.reverse ()
revword = ''. katılmak (revword)
Çıktıyı görebilmeniz için IDEOne'da kodu sizin için çalıştırdım. (Ayrıca çıktının stringaisThis olduğuna dikkat edin; bunun yerine boşluk bırakarak '' .join (revword) kullanmak isteyebilirsiniz.)
Ayrıca, sağladığınız yöntemin metni değil, yalnızca kelimeleri tersine çevirdiğini unutmayın. @ ron.rothman, bir dizeyi bütünüyle nasıl tersine çevireceğini detaylandıran bir bağlantı sağladı.
|
Bu, bir dizeyi tersine çevirmenin en sevdiğim yolu:
stra = "Bu bir dizedir"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
veya kelime sırasını tersine çevirmek istiyorsanız:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "string a Budur"
:)
|
Bir dizede çeşitli ters çevirmeler:
enstring = 'Bu bir dizedir'
reversedstring = enstrüman [:: - 1]
ters dizgiyi yazdır # gnirts a si sihT
wordsreversed = '' .join (enstring.split () içindeki kelime için [:: - 1] kelimesi)
ters çevrilen sözcükleri yazdır # sihT si a gnirts
revwordorder = '' .join (Instring.split () [:: - 1] 'de kelimesi kelimesine)
revwordorder # dize a Bu
revwordandorder = '' .join (enstring.split () [:: - 1] içindeki kelime için [:: - 1])
revwordandorder # gnirts a si sihT yazdır
|
Gelecekteki referans için, bir nesne [] .reverse () gibi bir yönteme sahip olduğunda, genellikle bu eylemi nesne üzerinde gerçekleştirir (yani, liste sıralanır ve hiçbir şey döndürmez, Hiçbiri döndürmez), üzerinde bir eylem gerçekleştiren sıralanmış gibi yerleşik işlevler bir nesne ve bir değer döndürür (yani sıralı liste)
|
>>> s = 'bu bir dizedir'
>>> s [:: - 1]
'gnirts a siht'
>>> '' .join (tersine çevrildi)
'gnirts a siht'
|
For döngüsü, dizeyi sondan (son harf) başlangıca (ilk harf) kadar yineler
>>> s = 'Bunu da deneyebilirsiniz:]'
>>> rev = ''
>>> aralıktaki i için (uzunluklar - 1, -1, -1):
... devir + = s [i]
>>> devir
']: oot siht yrt nac uoY'
|
Yorumlara ve diğer yanıtlara göre:
str_a = 'bu bir dizedir'
rev_word = '' .join (ters (str_a.split ()))
Yöntem zincirleme sonuçta Python'da çalışıyor ...
|
Listenin tersine çevrilmesi birden fazla yol kullanılarak yapılabilir. Önceki cevaplarda belirtildiği gibi ikisi çok belirgindir, biri reverse () işlevli ve ikisi dilimleme özelliğine sahip. Hangisini tercih etmemiz gerektiğine dair bazı bilgiler veriyorum.
Bir Python listesinin tersine çevrilmesi için her zaman reverse () işlevini kullanmalıyız. İki neden, biri yerinde ters çevirme ve ikisi diğerinden daha hızlı.
Cevabımı destekleyecek bazı rakamlar var
[15] içinde: len (l)
Çıkış [15]: 1000
[16] 'da:% timeit -n1 l.reverse ()
1 döngü, döngü başına en iyi 3: 7,87 µs
[17] 'de:% timeit -n1 l [:: - 1]
1 döngü, döngü başına en iyi 3: 10 µs
1000 tamsayı listesi için, ters () işlevi dilimlemeye kıyasla daha iyi performans gösterdi.
|
Aradığın cevap değil mi? Python etiketli diğer sorulara göz atın veya kendi sorunuzu sorun.